#define _CRT_SECURE_NO_WARNINGS 1

//int signFunc(int x)
//{
//	if (x > 0)
//		return 1;
//	else if (x < 0)
//		return -1;
//	else
//		return 0;
//}
//
//int arraySign(int* nums, int numsSize) 
//{
//	int ret = 1;
//	int i = 0;
//	for (i = 0; i < numsSize; i++)
//	{
//		ret *= nums[i];
//	}
//	return signFunc(ret);
//}
//#include<stdlib.h>
//int cmp(void* x, void* y)
//{
//	if (*(int*)x > *(int*)y)
//		return 1;
//	else if (*(int*)x < *(int*)y)
//		return -1;
//	else
//		return 0;
//}
//
//
//bool canMakeArithmeticProgression(int* arr, int arrSize) 
//{
//	qsort(arr, arrSize, sizeof(int), cmp);
//	int tmp = arr[1] - arr[0];
//	int i = 0;
//	for (i = 2; i < arrSize; i++)
//	{
//		if (arr[i] - arr[i - 1] != tmp)
//			return false;
//	}
//		return ture;
//}

int go_fast(int n)
{
	int x = 0;
	while (n / 10 != 0)
	{
		x += (n % 10) * (n % 10);
		n /= 10;
	}
	x += n * n;
	int y = 0;
	while (x / 10 != 0)
	{
		y += (x % 10) * (x % 10);
		x /= 10;
	}
	y += x * x;
	return y;
}

int go_slow(int n)
{
	int x = 0;
	while (n / 10 != 0)
	{
		x += (n % 10) * (n % 10);
		n /= 10;
	}
	x += n * n;
	return x;
}

bool isHappy(int n)
{
	int fast = n;
	int slow = n;
	do
	{
		fast = go_fast(fast);
		slow = go_slow(slow);
	} while (fast != slow);
	if (fast == 1)
		return true;
	else
		return false;

}